import { legacy_createStore as createStore } from 'redux';
// 2. 使用单独的变量维护初始值，通常叫initState之类
const initState = {
  count: 99,
  msg: 'Hello React',
};

// 1. 使用单独的函数维护reducer，通常叫xxxReducer
function countReducer(state = initState, action) {
  console.log('action----->', action);
  // 3. 使用switch语句替换if语句
  switch (action.type) {
    case 'add':
      return {
        ...state,
        count: state.count + 1,
      };
    case 'des':
      return {
        ...state,
        count: state.count - 1,
      };
    default:
      // 💥 记得default代表redux初始化数据，要写
      return state;
  }
}

// store.dispatch({ type: 'add' });
// // 1. 通过订阅，也就是 store.subscribe( 回调 ) 可以监听到数据的变化
// const unFn = store.subscribe(() => {
//   console.log('数据变化了----->', store.getState());
// });
// store.dispatch({ type: 'add' });
// store.dispatch({ type: 'des' });

// // 2. 调用解除监听的函数，不再监听仓库数据变化
// // 💥 关闭监听后，不会再触发监听的函数
// unFn();

// 创建仓库实例
const store = createStore(countReducer);
// 导出仓库实例
export default store;
